using MediatR;
using S.O.ErrorCode;

namespace S.O.Api.Write.Application.Command.Medical
{
    /// <summary>
    /// 创建医疗卡办理命令
    /// 用于单独办理医疗卡（新办、补办、换卡等）
    /// </summary>
    public class CreateMedicalCardCommand : IRequest<APIResult<string>>
    {
        /// <summary>
        /// 患者ID（必填）
        /// </summary>
        public long PatientId { get; set; }
        
        /// <summary>
        /// 患者姓名（必填）
        /// </summary>
        public string PatientName { get; set; } = string.Empty;
        
        /// <summary>
        /// 身份证号（必填）
        /// </summary>
        public string IdCard { get; set; } = string.Empty;
        
        /// <summary>
        /// 联系电话（必填）
        /// </summary>
        public string Phone { get; set; } = string.Empty;
        
        /// <summary>
        /// 办卡类型（新办、补办、换卡、挂失补办）
        /// </summary>
        public string CardType { get; set; } = "新办";
        
        /// <summary>
        /// 办卡费用（默认10元）
        /// </summary>
        public decimal CardFee { get; set; } = 10.00m;
        
        /// <summary>
        /// 办卡操作员
        /// </summary>
        public string Operator { get; set; } = "系统";
        
        /// <summary>
        /// 办卡窗口/科室
        /// </summary>
        public string IssueLocation { get; set; } = "挂号窗口";
        
        /// <summary>
        /// 备注信息
        /// </summary>
        public string? Remarks { get; set; }
        
        /// <summary>
        /// 原卡号（补办、换卡时需要）
        /// </summary>
        public string? OriginalCardNo { get; set; }
        
        /// <summary>
        /// 是否首次办卡
        /// </summary>
        public bool IsFirstTime { get; set; } = true;
    }
}